#! /bin/bash
#Declaración de las variables utiles para instula
GRUPO="`pwd`/grupo08/"
echo $GRUPO
#Carpetas y valores por defecto
CONFDIR="${GRUPO}confdir/"
BINDIR="${GRUPO}bin/"
MAEDIR="${GRUPO}mae/"
ARRIDIR="${GRUPO}arribos/"
RECHDIR="${GRUPO}rechazados/"
ACEPDIR="${GRUPO}aceptados/"
PROCDIR="${GRUPO}procesados/"
LOGDIR="${GRUPO}log/"
REPODIR="${GRUPO}reportes/"
DATASIZE=100
LOGEXT=".log"
LOGSIZE=400
pathLog="${CONFDIR}InstalaW5.log"
instalaConf=~/.grupo08/
pathInstala="${instalaConf}InstalaW5.conf"
valido=0
INSTALABLE="grupo08.tar.gz"

funcSalir(){
        echo "Proceso de instalación cancelado" | tee -a "$pathLog"
        exit 1
}


#Carpetas que se utilizan para la instalación
#############################################
maestrosDir="${GRUPO}"
comandosDir="${GRUPO}"
############################################

declare -a comandos=( 'IniciarW5.sh' 'MoverW5.sh' 'MirarW5.sh' 'DetectaW5.sh' 'StartD.sh' 'StopD.sh' 'LoguearW5.sh' 'BuscarW5.sh' 'ListarW5.pl' 'ResultadosGlobales.pm' 'InstalaW5.sh' 'ResultadosDetallados.pm' )
declare -a comandosFaltantes=( 'IniciarW5.sh' 'MoverW5.sh' 'MirarW5.sh' 'DetectaW5.sh' 'StartD.sh' 'StopD.sh' 'LoguearW5.sh' 'BuscarW5.sh' 'ListarW5.pl' 'ResultadosGlobales.pm' 'ResultadosDetallados.pm' 'InstalaW5.sh' )
declare -a maestros=( 'patrones' 'sistemas' 'Mensajes.mae' )
declare -a maestrosFaltantes=( 'patrones' 'sistemas' 'Mensajes.mae' )

declare -a variables=( 'BINDIR' 'MAEDIR' 'ARRIDIR' 'RECHDIR' 'ACEPDIR' 'PROCDIR' 'LOGDIR' 'REPODIR' 'DATASIZE' 'LOGEXT' 'LOGSIZE' 
'CONFDIR')



funcContiene(){
aux=$(cut -f2 -d '=' "$pathInstala"| grep -c "$1")
    if [ "$aux" -eq "1" ]
    then
	dir=$( grep  "$1" "$pathInstala" | cut -f1 -d '=')
	echo "Ya ha elegido esta ruta antes para el directorio "$dir" "|tee -a "$pathLog"
	return 1
    fi
return 0
}

funcValidarPath(){
#El path que pasan debe ser un subdirectorio de grupo y no debe existir, aparte no debo haber elegido ese directorio antes

mkdir -p "$GRUPO$1" 2>aux
huboError=`wc -l aux| cut -f1 -d ' '`


if [ $huboError -eq "0" ]
then
	res=0
	rm -R "$GRUPO$1"
else
	res=1
	echo "El path no es valido" | tee -a "$pathLog"
fi

return $res
}

#Valido que el valor ingresado sea un número entero
funcEsNumero(){
esUnNumero=`echo "$1" | grep -c "^[0-9]*$"`
if [ $esUnNumero -eq "1" ] && [ "$1" -ne "0" ]
then
	res=0
else
	echo "El valor ingresado no es válido" | tee -a "$pathLog"
	res=1
fi
return $res
}

funcVerificarComandosInstalados(){

for comando in "${comandos[@]}"
do
	if [ `ls -1 "$1" |grep -c "^$comando$"` -eq "1" ]
	then
 		comandosInstalados=("${comandosInstalados[@]}" $comando)
		comandosFaltantes=("${comandosFaltantes[@]/$comando/}")
	fi
done

}

funcVerificarMaestrosInstalados(){

for maestro in "${maestros[@]}"
do
	if [ `ls -1 "$1" |grep -c "^$maestro$"` -eq "1" ]
	then
 		maestrosInstalados=("${maestrosInstalados[@]}" $maestro)
		maestrosFaltantes=("${maestrosFaltantes[@]/$maestro/}")
	fi
done

}

funcVerificarEspacioSolicitado(){
echo "Verificando Espacio"
#Si el espacio solicitado esta disponible devuelvo 1, sino 0
espacioDisponible=`df -m "$GRUPO" |grep "^/" | sed "s|[ ]* |:|g" | cut -f4 -d':'`
if [ "$espacioDisponible" -gt "$1" ]
then
	DATASIZE="$1"
	res=0
else
     echo -e "
	\nInsuficiente espacio en disco.
	Espacio disponible: "$espacioDisponible" Mb.
	Espacio requerido "$1" Mb
	Cancele la instalación e inténtelo mas tarde o vuelva a intentarlo
	con otro valor\n" | tee -a "$pathLog"
     res=1
fi
return $res
}

funcCambiarVXDefecto(){
while true; do
    
   if [ $3 = "directorio" ]
   then
       vDefecto=$(echo "$2"|sed "s-\("$GRUPO"\)\(.*\)\(/\)-\2-")
   else
       vDefecto=$2
   fi

     echo -e "\n$1 ($vDefecto): " | tee -a "$pathLog"
     echo "¿Desea cambiar el valor por defecto? (si-no)" | tee -a "$pathLog"
     read respuesta
     echo $respuesta >> "$pathLog"
     case $respuesta in
        si) echo "	Introduzca el nuevo valor: " | tee -a "$pathLog"
            read -r valor
            echo $valor >> "$pathLog"
	
	
	    if [ -z "$valor" ]
	    then	  
            	 echo "El valor no puede ser vacio"| tee -a "$pathLog"
	    else
	    if [ "$3" = "directorio" ]
	    then
			funcValidarPath "$GRUPO$valor"		
		        if [ $? -eq "0" ] 
			then
				funcContiene "$GRUPO$valor" "$4"					
			fi
	    elif [ "$3" = "numero" ]
	    then
			funcEsNumero $valor	 
	    else 
		if [ $3 != "extension" ]
		then
			funcEsNumero $valor
    		        if [ $? -eq "0" ]
			then
				valido=0
				funcVerificarEspacioSolicitado $valor
			else
				valido=1
			fi
		fi
	    fi
	    if [ $? -eq "0" ] || [ $3 = "extension" ] && [ "$valido" -eq "0" ]
            then
		valido=0
			if [ $3 = "directorio" ]
			then
	                	eval $4=$(echo "$GRUPO$valor" | sed 's-\([^\]\)$-\1/-')
				return 0	
			fi
			if [ $3 = "extension" ]
			then
				punto="."
	                	eval $4="$punto$valor"
				return 0	
			fi
			eval $4=$valor
			return 0
            fi
	    fi;;
        no) return 0;;
        salir)funcSalir;;
        *)echo -e "\nPor favor introduzca si o no \n" | tee -a "$pathLog";;
    esac
done
}

funcReIniciarInstalacion(){

rm "$pathInstala"
funcCrearArchivoConfiguracion
funcIniciarInstalacion

}

funcCrearDirectorios(){

echo "Creando directorios"

	mkdir -p "$BINDIR" 2>tmp
	mkdir -p "$MAEDIR" 2>tmp
	mkdir -p "$ARRIDIR" 2>tmp
	mkdir -p "$RECHDIR" 2>tmp
	mkdir -p "$PROCDIR" 2>tmp
	mkdir -p "$LOGDIR" 2>tmp
	mkdir -p "$REPODIR" 2>tmp
	mkdir -p "$ACEPDIR" 2>tmp
	errorAlcrearDirectorios=`wc -l < tmp`
	rm tmp
	if [ $errorAlcrearDirectorios -ne "0" ]
	then
		echo "Hubo un error al intentar crear los directorios. Vuelva a elegir los directorios"
		rm -R "$BINDIR"
		rm -R "$MAEDIR" 
		rm -R "$ARRIDIR" 
		rm -R "$RECHDIR"
		rm -R "$PROCDIR" 
		rm -R "$LOGDIR"
		rm -R "$REPODIR" 
		funcIniciarInstalacion
	fi
}

funcCrearArchivoConfiguracion(){

if [ ! -f "$pathInstala" ]
then
	> "$pathInstala"
fi

existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "GRUPO")
if [ "$existe" -eq "0" ]
then
	echo "GRUPO=$GRUPO=$USER=$(date)" >> "$pathInstala"
fi

existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "CONFDIR")
if [ "$existe" -eq "0" ]
then
	echo "CONFDIR=$CONFDIR=$USER=$(date)" >> "$pathInstala"
fi

existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "SECUENCIA1")
if [ "$existe" -eq "0" ]
then
	echo "SECUENCIA1=0=$USER=$(date)" >> "$pathInstala"
fi

existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "SECUENCIA2")
if [ "$existe" -eq "0" ]
then
	echo "SECUENCIA2=0=$USER=$(date)" >> "$pathInstala"
fi
}

funcIniciarInstalacion(){

#Paso 5: Definir el directorio de instalación de los ejecutables
existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "BINDIR")
if [ "$existe" -eq "0" ]
then
	funcCambiarVXDefecto "Defina el directorio de instalación de los ejecutables"  "$BINDIR" directorio BINDIR
	echo "BINDIR=$BINDIR=$USER=$(date)" >> "$pathInstala"
fi

#Paso 6: Definir el directorio de instalación de los archivos maestros
existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "MAEDIR")
if [ "$existe" -eq "0" ]
then
	funcCambiarVXDefecto "Defina el directorio de instalacion de los archivos maestros" "$MAEDIR" directorio MAEDIR
	echo "MAEDIR=$MAEDIR=$USER=$(date)" >> "$pathInstala"
fi

#Paso 7: Definir el directorio de arribo de archivos externos
existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "ARRIDIR")
if [ "$existe" -eq "0" ]
then
	funcCambiarVXDefecto "Defina el directorio de instalacion de arribo de archivos externos" "$ARRIDIR" directorio ARRIDIR
echo "ARRIDIR=$ARRIDIR=$USER=$(date)" >> "$pathInstala"
fi


#Paso 8/9: Definir el espacio mínimo libre para el arribo de archivos externos
existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "DATASIZE")
if [ $existe -eq "0" ]
then
	funcCambiarVXDefecto "Defina el espacio mínimo libre para el arribo de archivos externos en Mb." $DATASIZE espacio DATASIZE
echo "DATASIZE=$DATASIZE=$USER=$(date)" >> "$pathInstala"
fi



#Paso 10: Definir el directorio de grabación de los archivos rechazados
existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "RECHDIR")
if [ "$existe" -eq "0" ]
then
	funcCambiarVXDefecto "Defina el directorio de grabación de los archivos externos rechazados" "$RECHDIR" directorio RECHDIR
	echo "RECHDIR=$RECHDIR=$USER=$(date)" >> "$pathInstala"
fi

#Paso 11: Definir el directorio de grabación de los archivos aceptados
existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "PROCDIR")
if [ "$existe" -eq "0" ]
then
	funcCambiarVXDefecto "Defina el directorio de grabación de los archivos externos aceptados" "$ACEPDIR" directorio ACEPDIR
	echo "ACEPDIR=$ACEPDIR=$USER=$(date)" >> "$pathInstala"
fi

#Paso 12: Definir el directorio de trabajo principal del proceso BuscarW5
existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "PROCDIR")
if [ "$existe" -eq "0" ]
then
	funcCambiarVXDefecto "Defina el directorio de grabación de los archivos externos procesados"  "$PROCDIR" directorio PROCDIR
	echo "PROCDIR=$PROCDIR=$USER=$(date)" >> "$pathInstala"
fi

#Paso 13: Mostrar el directorio de grabación de los logs de auditoria y la extension
existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "LOGDIR")
if [ "$existe" -eq "0" ]
then
	funcCambiarVXDefecto "Defina donde se guardarán los logs del sistema" "$LOGDIR" directorio LOGDIR
	echo "LOGDIR=$LOGDIR=$USER=$(date)" >> "$pathInstala"
fi


existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "LOGEXT")
if [ "$existe" -eq "0" ]
then
	funcCambiarVXDefecto "Defina la extensión de los archivos de log" "$(echo "$LOGEXT"|cut -f2 -d '.')" extension LOGEXT
	echo "LOGEXT=$LOGEXT=$USER=$(date)" >> "$pathInstala"
fi


echo -e "
\nLos Logs de este sistema se grabaran en: $LOGDIR
La extensión de los archivos de log es: "$LOGEXT"\n"|tee -a "$pathLog"

#Paso 14: Definir el tamaño máximo para los archivos de log
existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "LOGSIZE")
if [ "$existe" -eq "0" ]
then
	funcCambiarVXDefecto "Defina el tamaño máximo para los archivos $LOGEXT en Kbytes" 400 numero LOGSIZE
	echo "LOGSIZE=$LOGSIZE=$USER=$(date)" >> "$pathInstala"
fi



#Paso 15: Definir el directorio de grabación de los reportes de salida
existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "REPODIR")
if [ "$existe" -eq "0" ]
then
funcCambiarVXDefecto "Defina el directorio de grabación de los reportes de salida" "$REPODIR" directorio REPODIR
echo "REPODIR=$REPODIR=$USER=$(date)" >> "$pathInstala"
fi

#Paso 16: Mostrar estructura de directorios resultante y valores de parámetros configurados
clear
echo -e "
\nTP SO7508 2do cuatrimestre 2012. Tema x Copyright © Grupo 08
Librería del sistema: "$CONFDIR"
Ejecutales: "$BINDIR"
Archivos maestros: "$MAEDIR"
Directorio de arribo de archivos externos: "$ARRIDIR"
Espacio mínimo libre para arribos: "$DATASIZE Mb"
Archivos externos aceptados: "$ACEPDIR"
Archivos externos rechazados: "$RECHDIR"
Archivos procesados: "$PROCDIR"
Reportes de salida: "$REPODIR"
Logs de auditoría del sistema: "$LOGDIR"
Extensión de los archivos del log del sistema: "$LOGEXT"
Tamaño máximo para los archivos del log del sistema: "$LOGSIZE" Kb.
Estado de la instalación: LISTA
\n¿Los datos ingresados son correctos? (si-no)"| tee -a $pathLog
	
while true; do
     read respuesta
     echo $respuesta >> "$pathLog"
     case $respuesta in
	si) return 1;;
	no) funcReIniciarInstalacion;;
	salir)funcSalir;;
	*)echo -e "\nPor favor introduzca si o no\n" | tee -a "$pathLog";;
     esac
done

}


####################################Comienza comando Instalar!!!!!###############################################################

#Descomprimo el instalable
if [ ! -f "$INSTALABLE" ] 
then
	echo -e "\nFaltan los directorios necesarios para iniciar la instalación, lea las instrucciones antes de comenzar\n"
	exit 1
else
	tar xzvf "$INSTALABLE"
fi


# Paso 1: Iniciar el archivo de log
if [ ! -f "$pathLog" ]
then
        echo "#Archivo de log creado el" $(date) >> "$pathLog"
fi

echo -e "\nComando InstalaW5 Inicio de Ejecución\n" | tee -a "$pathLog"

# Paso 2: Detectar si el paquete o alguno de sus componentes ya esta instalado
#Para ver si ya tengo algo instalado me fijo si existe un archivo de configuración previo

mkdir -p "$instalaConf"

funcCrearArchivoConfiguracion

count="0"
for variable in "${variables[@]}"
do
	existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "$variable")
	if [ "$existe" -eq "1" ]
	then
		eval $variable=$(grep "$variable" "$pathInstala" | cut -f2 -d '=')
		count=`expr $count + 1`
	fi
done




#Verifico si se el archivo de cofiguracion esta completo
if [ "$count" -eq "${#variables[@]}" ]
then
	funcCrearDirectorios
	funcVerificarComandosInstalados $BINDIR
	funcVerificarMaestrosInstalados $MAEDIR
	if [ "${#comandosInstalados[@]}" -eq "${#comandos[@]}" ] && [ "${#maestrosInstalados[@]}" -eq "${#maestros[@]}" ]
	then
		echo -e "
		\nTP SO7508 Segundo Cuatrimestre 2012. Tema W Copyright © Grupo 08

		\nLibrería del Sistema: $CONFDIR\n"| tee -a $pathLog

		ls -1 "$CONFDIR" | tee -a "$pathLog"

		echo -e "\nEjecutables: $BINDIR\n" | tee -a "$pathLog"

		echo "${comandosInstalados[@]}" | tee -a "$pathLog"

		echo -e "\nArchivos maestros: $MAEDIR\n" | tee -a "$pathLog" 

		echo "${maestrosInstalados[@]}" | tee -a "$pathLog"

		echo -e "\nDirectorio de arribo de archivos externos: $ARRIDIR" | tee -a "$pathLog"

		ls -1 "$ARRIDIR" | tee -a "$pathLog"

		echo -e "\nArchivos externos aceptados: $ACEPDIR" | tee -a "$pathLog"

		ls -1 "$ACEPDIR" | tee -a "$pathLog"

		echo -e "\nArchivos externos rechazados: $RECHDIR \n" | tee -a "$pathLog"

		ls -1 "$RECHDIR" | tee -a "$pathLog"

		echo -e "\nArchivos procesados: $PROCDIR \n" | tee -a "$pathLog"

		ls -1 "$PROCDIR" | tee -a "$pathLog"

		echo -e "\nReportes de salida: $REPODIR \n" | tee -a "$pathLog"

		ls -1 "$REPODIR" | tee -a "$pathLog"

		echo -e "\nLogs de auditoria del Sistema: $LOGDIR/<comando>.$LOGEXT \n" | tee -a "$pathLog"

		echo "Estado de la instalacion: COMPLETA" | tee -a "$pathLog"


		for comando in "${comandos[@]}"
		do
		if [ -f  "$comandosDir$comando" ]
		then
			rm "$comandosDir$comando" 
		fi
		done
		
		for maestro in "${maestros[@]}"
		do
		if [ -f  "$maestrosDir$maestro" ]
		then
			rm "$maestrosDir$maestro"
		fi
		done

		exit 0

	else
	#La instalacion esta incompleta

		echo -e "
		TP S07508 Segundo Cuatrimestre 2012. Tema W Copyright @ Grupo 08

		Componentes Existentes:

		Ejecutables ($BINDIR)

		${comandosInstalados[@]}

		Archivos maestros: ($MAEDIR) 

		${maestrosInstalados[@]}" | tee -a "$pathLog"

		echo -e "
		Componentes faltantes: 
	
		Comandos

		${comandosFaltantes[@]}

		Maestros

		${maestrosFaltantes[@]}

		Estado de la instalacion: INCOMPLETA

		Desea completar la instalacion? (si-no)" | tee -a "$pathLog"


	while true; do
	     read respuesta
	     echo $respuesta >> "$pathLog"
	     case $respuesta in
        	si) break;;
	        no) funcSalir;;
	        salir) funcSalir;;
	        *)echo -e "\nPor favor introduzca si o no\n" | tee -a "$pathLog";;
	     esac
	done


	fi
else
	if [ "$count" -gt "0" ]
	then
		echo "Reanudando Instalación, el archivo de configuración no estaba completo"| tee -a "$pathLog"
	fi
fi

# Paso 3: Chequear que Perl esté instalado
ubicacionDePerl=`which perl`
ubicacionDePerl=${ubicacionDePerl%perl}
corroboracionPerl="^perl[5-9]"
ls "$ubicacionDePerl" | grep "$corroboracionPerl" > archivoAux
versionesDePerlSuperioresA5=`wc -l < archivoAux`
rm archivoAux
if [ $versionesDePerlSuperioresA5 -eq "0" ]
then
	echo '
        +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
         TP SO7508 Segundo Cuatrimestre 2012. Tema W Copyright © Grupo 08                     
         Para instalar el TP es necesario contar con Perl 5 o superior instalado.          
         Efectúe su instalación e inténtelo nuevamente. Proceso de Instalación Cancelado    
        +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++' >> "$pathLog"
else
	echo "
	++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	TP SO7508 Segundo Cuatrimestre 2012. Tema W Copyright © Grupo 08 Perl Version:     
	$(perl --version)                                                                    
	++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"  >> "$pathLog"
fi



#Paso 4: Brindar la información de la instalación

echo " 

Directorio de trabajo para la instalación: $GRUPO

$(ls -1  "$GRUPO")"  | tee -a "$pathLog"

echo " 

Librería del Sistema: $CONFDIR
        
$(ls -1 "$CONFDIR")"  | tee -a "$pathLog"


if [ ! "$count" -eq "${#variables[@]}" ]
then
	echo -e "
	\n\nEstado de la instalación: PENDIENTE
	Para completar la instalación Ud. deberá:"| tee -a "$pathLog"
	
	existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "BINDIR")
	if [ "$existe" -eq "0" ]
	then
	        echo -e "- Definir el directorio de instalación de los ejecutables"|tee -a "$pathLog"
	fi

	existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "MAEDIR")
	if [ "$existe" -eq "0" ]
	then
	        echo -e "- Definir el directorio de instalación de los archivos maestros"|tee -a "$pathLog"
	fi
	
	existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "ARRIDIR")
	if [ "$existe" -eq "0" ]
	then
	        echo -e "- Definir el directorio de arribo de archivos externos"|tee -a "$pathLog"
	fi
	
	existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "DATASIZE")
	if [ "$existe" -eq "0" ]
	then
		echo -e "- Definir el espacio mínimo libre para el arribo de archivos externos" |tee -a "$pathLog"
	fi

	existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "RECHDIR")
	if [ "$existe" -eq "0" ]
	then
	        echo -e "- Definir el directorio de grabación de los archivos externos rechazados"|tee -a "$pathLog"
	fi
	
	existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "LOGDIR")
	if [ "$existe" -eq "0" ]
	then
	        echo -e "- Definir el directorio de grabación de los logs de auditoria"|tee -a "$pathLog"
	fi
	
        existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "LOGEXT")
	if [ "$existe" -eq "0" ]
	then
		echo -e "- Definir la extensión de los archivos de log"|tee -a "$pathLog"
	fi
	
	existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "LOGSIZE")
	if [ "$existe" -eq "0" ]
	then
		echo -e "- Definir el tamaño máximo para los archivos de log"|tee -a "$pathLog"
	fi	

	existe=$(sed "s-\(\)\(=.*\)-\1-" "$pathInstala"| grep -c "REPODIR")
	if [ "$existe" -eq "0" ]
	then
        	echo -e "- Definir el directorio de grabación de los reportes de salida\n\n"|tee -a "$pathLog"
	fi

funcIniciarInstalacion
fi

#Paso 17: Confirmar Inicio de instalación
echo "Iniciando Instalacion.. Esta usted seguro? (si-no)" | tee -a "$pathLog"
while true; do
     read respuesta
     echo $respuesta >> "$pathLog"
     case $respuesta in
	si) break;;
	no) funcSalir;;
	salir) funcSalir;;
	*)echo -e "\nPor favor introduzca si o no\n" | tee -a "$pathLog";;
     esac
done


#Paso 18: Crear las estructuras de directorio requeridas

echo "Creando estructuras de directorio..."| tee -a "$pathLog"
funcCrearDirectorios

echo -e "
 \nInstalando Archivos Maestros\n" | tee -a "$pathLog"

ls -1 "$maestrosDir" > archivoAux
hayArchivos=`wc -l archivoAux| cut -f1 -d ' '`
rm archivoAux

if [ $hayArchivos -eq "0" ]
then
        echo "No hay archivos en el directorio $maestrosDir"
else
	for maestro in "${maestros[@]}"
	do
		if [ -f  "$maestrosDir$maestro" ]
		then
			mv $maestrosDir$maestro "$MAEDIR"
		fi
	done

fi

echo -e "
Instalando Programas y Funciones\n" | tee -a "$pathLog"

ls -1 "$comandosDir" > archivoAux
hayArchivos=`wc -l archivoAux| cut -f1 -d ' '`
rm archivoAux

if [ $hayArchivos -eq "0" ]
then
	echo "No hay archivos en el directorio $comandosDir"
else

for comando in "${comandos[@]}"
do
	if [ -f  "$comandosDir$comando" ]
	then
		mv $comandosDir$comando "$BINDIR"
	fi
done

fi

echo -e "
\nActualizando la configuración del sistema" | tee -a "$pathLog"


#Paso 20: Mostrar mensaje de fin de instalación
echo -e "
\nInstalación concluida\n"| tee -a "$pathLog"
exit 0
